package com.zhuhjay.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhuhjay.system.domain.entity.User;
import com.zhuhjay.system.domain.vo.RegisterUser;
import com.zhuhjay.system.domain.vo.UserInfo;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhuhjay
 * @since 2022-03-20
 */
public interface IUserService extends IService<User> {

    /**
     * 保存新用户信息(要确保用户账号唯一)
     * @param registerUser 用户信息
     */
    void saveUser(RegisterUser registerUser);

    /**
     * 修改登录信息
     * @param id 登录用户
     */
    void setLoginInfo(Integer id);

    /**
     * 通过用户名获取用户的信息数据
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUsername(String username);

    /**
     * 根据id获取用户的信息, 不包括密码
     * @param id 用户id
     * @return 用户信息
     */
    User getUserInfoById(Integer id);

    /**
     * 通过用户的id修改头像
     * @param id 用户id
     * @param file 头像文件
     * @return 新的头像地址
     */
    String setUserAvatarById(Integer id, MultipartFile file);

    /**
     * 通过用户的id修改个人信息
     * @param id 用户id
     * @param userInfo 新的用户信息
     */
    void setUserInfoById(Integer id, UserInfo userInfo);

    /**
     * 通过用户的id修改密码
     * @param id 用户id
     * @param password 密码
     */
    void setPassword(Integer id, String password);

    /**
     * 查询除了自己以外的所有用户信息
     * @param id 排除本人的信息
     * @param pageNum 页数
     * @param pageSize 每页长度
     * @return 用户列表
     */
    Page<User> getUserList(Integer id, Integer pageNum, Integer pageSize);

}
